package cn.edu.jxau.test;

import java.util.Objects;

public class Main {

	public static void main(String[] args) {

		foo(new int[] { 2, 4, 3, 6, 3, 2, 5, 5 });
	}

	public static void foo(int[] arr) {

		// 1.参数校验 //
		Objects.requireNonNull(arr, "参数arr不能为null");
		if (arr.length < 2) {
			throw new IllegalArgumentException("参数arr的长度需大于等于2");
		}

		// 2.异或所有元素，求出结果的二进制形式的第一个为1的位置 //
		int t = 0;
		for (int i = 0; i < arr.length; i++) {
			t = t ^ arr[i];
		}
		int i = 0; // 第一个1的位置
		while ((t >> i & 1) != 1) {
			i++;
		}
		int x = 0;
		int y = 0;
		for (int j = 0; j < arr.length; j++) {
			if ((arr[j]>>i & 1) == 0) {
				x = x ^ arr[j];
			} else {
				y = y ^ arr[j];
			}
		}
		System.out.println(x + "\t" + y);
	}
}